package com.example.randomthoughts.daimasuixianglu.arrayfoundation.binarysearch;

/**
 * @author csd
 * @version 1.0
 * 给你一个正整数 num 。如果 num 是一个完全平方数，则返回 true ，否则返回 false 。
 * <p>
 * 完全平方数 是一个可以写成某个整数的平方的整数。换句话说，它可以写成某个整数和自身的乘积。
 * <p>
 * 不能使用任何内置的库函数，如  sqrt 。
 */
@SuppressWarnings({"all"})
public class Solution367 {
    public static void main(String[] args) {
        int x = 16;
        boolean perfectSquare = isPerfectSquare(x);
        System.out.println("perfectSquare = " + perfectSquare);
    }

    public static boolean isPerfectSquare(int num) {
        int left = 0;
        int right = num;
        int ans = -1;
        while (left <= right) {
            int mid = left + ((right - left) / 2);
            if ((long) mid * mid == num) {
                return true;
            } else if ((long) mid * mid > num) {
                right = mid - 1;
            } else if ((long) mid * mid < num) {
                left = mid + 1;
            }
        }
        return false;
    }
}
